extends Area2D

var direction = Vector2.RIGHT
var speed = 350.0
var damage = 12
var slow_effect = 0.5  # 减速效果（移动速度乘数）
var slow_duration = 2.0  # 减速持续时间（秒）
var freeze_chance = 0.2  # 冰冻几率
var is_critical = false
var lifetime = 3.0  # 最大存活时间（秒）

var time_alive = 0.0

func _ready():
	# 设置碰撞检测
	connect("body_entered", _on_body_entered)
	
	# 设置冰锥外观（根据是否暴击）
	if is_critical:
		$Sprite2D.modulate = Color(0.8, 1.2, 1.5)  # 暴击时颜色更亮
		$Sprite2D.scale = Vector2(1.3, 1.3)  # 暴击时尺寸更大

func _process(delta):
	# 移动冰锥
	position += direction * speed * delta
	
	# 旋转冰锥（可选）
	rotation = direction.angle()
	
	# 生命周期计时
	time_alive += delta
	if time_alive >= lifetime:
		queue_free()  # 到达最大存活时间后消失

func _on_body_entered(body):
	# 检查是否击中敌人
	if body.is_in_group("enemies") and body.has_method("take_damage"):
		# 造成直接伤害
		body.take_damage(damage)
		
		# 应用减速效果（如果敌人支持）
		if body.has_method("apply_slow_effect"):
			body.apply_slow_effect(slow_effect, slow_duration)
		
		# 尝试冰冻（如果敌人支持）
		if body.has_method("apply_freeze_effect") and randf() < freeze_chance:
			body.apply_freeze_effect(slow_duration * 0.5)  # 冰冻时间为减速时间的一半
		
		# 创建冰冻效果
		create_ice_effect(body.global_position)
		
		# 销毁冰锥
		queue_free()

func create_ice_effect(position):
	# 创建冰冻效果
	var ice_effect = preload("res://IceEffect.tscn").instantiate()
	get_tree().get_root().add_child(ice_effect)
	ice_effect.global_position = position
	
	# 如果是暴击，效果更大
	if is_critical:
		ice_effect.scale = Vector2(1.5, 1.5)
